{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "lin_reg = LinearRegression()\n",
    "\n",
    "def PolynomialRegression(degree):\n",
    "    return Pipeline([\n",
    "        (\"poly\", PolynomialFeatures(degree=degree)),\n",
    "        (\"std_scaler\", StandardScaler()),\n",
    "        (\"lin_reg\", lin_reg)\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "np.random.seed(666)\n",
    "x = np.random.uniform(-3, 3, size=100)\n",
    "X = x. reshape(-1, 1)\n",
    "y = 0.5 * x**2 + x + 2 + np.random.normal(0, 1, size=100)\n",
    "\n",
    "plt.scatter(x, y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6880004678712686"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import mean_squared_error\n",
    "poly100_reg = PolynomialRegression(degree=100)\n",
    "poly100_reg.fit(X, y)\n",
    "y100_predict = poly100_reg.predict(X)\n",
    "mean_squared_error(y, y100_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y100_predict = poly100_reg.predict(X)\n",
    "plt.scatter(x, y)\n",
    "plt.plot(np.sort(x), y100_predict[np.argsort(x)], color='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "X_plot = np.linspace(-3, 3, 100).reshape(100, 1)\n",
    "y_plot = poly100_reg.predict(X_plot)\n",
    "plt.scatter(x, y)\n",
    "plt.plot(X_plot[:, 0], y_plot, color='r')\n",
    "plt.axis([-3, 3, -1, 10])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1.21097006e+12,  1.19198819e+01,  1.78867904e+02, -2.95987019e+02,\n",
       "       -1.79531579e+04, -1.54151064e+04,  8.34384008e+05,  8.19758499e+05,\n",
       "       -2.23628081e+07, -1.44767967e+07,  3.87211849e+08,  1.13415788e+08,\n",
       "       -4.61600837e+09, -1.25028833e+08,  3.93150842e+10, -5.47613295e+09,\n",
       "       -2.44176507e+11,  5.46306491e+10,  1.11421150e+12, -2.76412491e+11,\n",
       "       -3.71329570e+12,  8.55468251e+11,  8.80961399e+12, -1.60750401e+12,\n",
       "       -1.39204217e+13,  1.49444135e+12,  1.19236839e+13,  2.47521688e+11,\n",
       "        4.42430553e+11, -1.64287100e+12, -1.05153908e+13, -1.80895216e+11,\n",
       "        3.00207361e+12,  2.75578358e+12,  8.74123180e+12, -1.36695737e+12,\n",
       "       -1.22670880e+12, -7.00478229e+11, -8.24896132e+12, -8.66309669e+11,\n",
       "       -2.75689072e+12,  1.39629460e+12,  6.26144462e+12, -3.47974176e+11,\n",
       "        6.29124500e+12,  1.33767267e+12, -6.11898796e+11,  2.92306225e+11,\n",
       "       -6.59758602e+12, -1.85664319e+12, -4.13408892e+12, -9.72006661e+11,\n",
       "       -3.99038794e+11, -7.53680910e+11,  5.49213942e+12,  2.18520516e+12,\n",
       "        5.24342787e+12,  7.50245141e+11,  5.50263530e+11,  1.70648559e+12,\n",
       "       -2.26789352e+12, -1.84598222e+11, -5.47303676e+12, -2.86220611e+12,\n",
       "       -3.88076540e+12, -1.19593236e+12,  1.16313815e+12, -1.41081942e+12,\n",
       "        3.56349490e+12,  7.12345817e+11,  4.76398301e+12,  2.60002802e+12,\n",
       "        1.84224334e+12,  3.06318514e+12, -1.33316411e+12,  6.18515991e+11,\n",
       "       -2.64566982e+12, -1.01426612e+12, -4.76745537e+12, -3.59229268e+12,\n",
       "       -1.68056493e+12, -3.57479576e+12,  2.06628597e+12, -6.07535225e+11,\n",
       "        3.40447747e+12,  3.42181114e+12,  3.31401269e+12,  4.92289470e+12,\n",
       "        3.79997144e+11,  1.34187245e+12, -3.34878935e+12, -2.07865993e+12,\n",
       "       -3.24636729e+12, -5.48901934e+12,  5.87221409e+11, -2.27318240e+12,\n",
       "        2.60029053e+12,  8.21819706e+12,  4.79214839e+10, -3.11436331e+12,\n",
       "       -6.27732007e+11])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lin_reg.coef_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "为了尽量地拟合数据，使得线条非常陡峭，数学上表示就是系数非常大"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 岭回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(42)\n",
    "x = np.random.uniform(-3.0, 3.0, size=100)\n",
    "X = x.reshape(-1, 1)\n",
    "y = 0.5 * x + 3 + np.random.normal(0, 1, size=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X, y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "def PolynomialRegression(degree):\n",
    "    return Pipeline([\n",
    "        (\"poly\", PolynomialFeatures(degree=degree)),\n",
    "        (\"std_scaler\", StandardScaler()),\n",
    "        (\"lin_reg\", LinearRegression())\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "np.random.seed(666)\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "167.94010867772357"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import mean_squared_error\n",
    "\n",
    "poly_reg = PolynomialRegression(degree=20)\n",
    "poly_reg.fit(X_train, y_train)\n",
    "y_predict = poly_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "X_plot = np.linspace(-3, 3, 100).reshape(100, 1)\n",
    "y_plot = poly_reg.predict(X_plot)\n",
    "\n",
    "plt.scatter(x, y)\n",
    "plt.plot(X_plot[:,0], y_plot, color='r')\n",
    "plt.axis([-3, 3, 0, 6])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_model(model):\n",
    "    X_plot = np.linspace(-3, 3, 100).reshape(100, 1)\n",
    "    y_plot = model.predict(X_plot)\n",
    "    \n",
    "    plt.scatter(x, y)\n",
    "    plt.plot(X_plot[:,0], y_plot, color='r')\n",
    "    plt.axis([-3, 3, 0, 6])\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_model(poly_reg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用岭回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import Ridge\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "def RidgeRegression(degree, alpha):\n",
    "    return Pipeline([\n",
    "        (\"poly\", PolynomialFeatures(degree=degree)),\n",
    "        (\"std_scaler\", StandardScaler()),\n",
    "        (\"ridge_reg\", Ridge(alpha=alpha))\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.3233492754136291"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ridge1_reg = RidgeRegression(20, 0.0001)\n",
    "ridge1_reg.fit(X_train, y_train)\n",
    "y1_predict = ridge1_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y1_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_model(ridge1_reg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.1888759304218461"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ridge2_reg = RidgeRegression(20, 1)\n",
    "ridge2_reg.fit(X_train, y_train)\n",
    "y2_predict = ridge2_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y2_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_model(ridge2_reg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.3196456113086197"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ridge3_reg = RidgeRegression(20, 100)\n",
    "ridge3_reg.fit(X_train, y_train)\n",
    "y3_predict = ridge3_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y3_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_model(ridge3_reg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.840889124848122"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ridge4_reg = RidgeRegression(20, 100000000)\n",
    "ridge4_reg.fit(X_train, y_train)\n",
    "y4_predict = ridge4_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y4_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_model(ridge4_reg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "当a非常大时，本质上成了优化正则表达项，即让所有theta=0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
